package br.com.controller.serie;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.arquitetura.controlador.AbstractMBean;
import br.com.arquitetura.excecoes.BDException;
import br.com.arquitetura.servico.ServiceCadastro;
import br.com.data.hibernate.SerieHibernateDAO;
import br.com.model.entidade.Serie;

@ManagedBean
@ViewScoped
public class MBSerie extends AbstractMBean<Serie>{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Serie serie;
	private List<Serie> series;
	private boolean vizualizavel;
	private boolean editavel;
	private SerieHibernateDAO serieHibernateDAO;
	
	@ManagedProperty(value="#{serviceCadastro}")
	private ServiceCadastro serviceCadastro;
	
	public void setServiceCadastro(ServiceCadastro serviceCadastro) {
		this.serviceCadastro = serviceCadastro;
	}
	
	public MBSerie(){
		serieHibernateDAO = (SerieHibernateDAO) getBean("serieHibernateDAO");
		limpar();
		
	}

	
	public void irEditar(){
		editavel = true;
		
	}
	
	public void mudarVizualizar(){
		vizualizavel = !vizualizavel;
		
	}
	
	public void excluir(){
		try {
			
			serviceCadastro.excluir(serie);
			this.limpar();
			FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Sucesso", "Serie excluido com sucesso!"));
		} catch (BDException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Erro", "Erro ao excluir!"));
		}
	}
	
	public void editar(){
		try {
			serviceCadastro.atualizar(serie);
			this.limpar();
			FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Sucesso", "Serie cadastrado com sucesso!"));
		
			
			
		} catch (BDException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Erro", "Erro ao cadastrar!"));
		}
	}
	
	
	public void cadastrar(){
		try {
			
				
				List<String> listaPermissoes = new ArrayList<String>();
				listaPermissoes.add("Serie");
				
				serviceCadastro.salvar(serie);
				
				this.limpar();
				FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Sucesso", "Serie cadastrado com sucesso!"));
			
			
		} catch (BDException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Erro", "Erro ao cadastrar!"));
		}
	}
	
	
	public void limpar(){
		try {
			this.series = serieHibernateDAO.listAll(Serie.class);
		} catch (BDException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.serie = new Serie();
		vizualizavel = false;
		editavel = false;
	}
	
	
	
	public Serie getSerie() {
		return serie;
	}

	public void setSerie(Serie Serie) {
		this.serie = Serie;
	}

	public List<Serie> getSeriees() {
		return this.series;
	}

	public void setSeriees(List<Serie> Seriees) {
		
		
		this.series = Seriees;
	}

	
	public boolean isVizualizavel() {
		return vizualizavel;
	}


	public void setVizualizavel(boolean vizualizavel) {
		this.vizualizavel = vizualizavel;
	}


	public boolean isEditavel() {
		return editavel;
	}


	public void setEditavel(boolean editavel) {
		this.editavel = editavel;
	}
	
	
	
}
